#include "zhi.h"

//新建模块
模块对象S* 新建对象模块(虚拟机* 虚拟机S, const char* modName) {
   模块对象S* objModule = 分配指定类型的内存块M(虚拟机S, 模块对象S);
   if (objModule == NULL) {
      内存分配_错误("allocate 模块对象S failed!"); 
   }

   //ObjModule是元信息对象,不属于任何一个类
   初始化对象头(虚拟机S, &objModule->objHeader, 对象类型_模块作用域, NULL);

   将obj作为临时根对象(虚拟机S, (对象头S*)objModule);
   ZiFuChuanBufferInit(&objModule->moduleVarName);
   ValueBufferInit(&objModule->moduleVarValue);

   objModule->name = NULL;   //核心模块名为NULL
   if (modName != NULL) {
      objModule->name = 以字符串创建字符串对象(虚拟机S, modName, strlen(modName));
   }
   去掉临时根对象(虚拟机S);

   return objModule;
}

//创建类class的实例
对象实例S* 新建类的实例(虚拟机* 虚拟机S, Class* class) {
   //参数class主要作用是提供类中field的数目
   对象实例S* objInstance = 分配除主类型外还需要额外指定大小的内存M(虚拟机S,
	 对象实例S, sizeof(Value) * class->fieldNum);

   //在此关联对象的类为参数class
   初始化对象头(虚拟机S, &objInstance->objHeader, 对象类型_对象实例, class);

   //初始化field为NULL
   uint32_t idx = 0;
   while (idx < class->fieldNum) {
      objInstance->fields[idx++] = VT_TO_VALUE(值类型_空);
   }
   return objInstance;
}
